package com.engine.salary.entity.datacollection.dto;

import com.cloudstore.eccom.pc.table.WeaTableType;
import com.engine.salary.annotation.*;
import com.engine.salary.util.excel.ExcelProperty;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Set;

/**
 * 数据采集-累计情况表
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@SalaryTable(pageId = "a4f85287-e3f9-7841-adn9-7d06e54y6rj8", tableType = WeaTableType.CHECKBOX, operates = {
        @SalaryTableOperate(text = "查看明细")
})
@Auth(page = "addUpSituation")
public class AddUpSituationDTO {
    //主键id
    @JsonSerialize(using = ToStringSerializer.class)
    @SalaryTableColumn(column = "id", display = false)
    private Long id;

    //员工id
    private Long employeeId;

    //年份
    private Integer year;

    //月份
    private Integer month;

    //姓名
    @SalaryTableColumn(text = "姓名", width = "10%", column = "username")
    @TableTitle(title = "姓名", dataIndex = "username", key = "username")
    @ExcelProperty(index = 0)
    @I18n
    private String username;
//
//    @SalaryTableColumn(text = "申报月份", width = "10%", column = "username")
//    private String taxYearMonth;

    //个税扣缴义务人
    @SalaryTableColumn(text = "个税扣缴义务人", width = "10%", column = "taxAgentName")
    @TableTitle(title = "个税扣缴义务人", dataIndex = "taxAgentName", key = "taxAgentName")
    @ExcelProperty(index = 1)
    private String taxAgentName;

    /**
     * 个税扣缴义务人id
     */
    private Long taxAgentId;

    //部门
    @SalaryTableColumn(text = "部门", width = "10%", column = "departmentName")
    @TableTitle(title = "部门", dataIndex = "departmentName", key = "departmentName")
    @ExcelProperty(index = 2)
    @I18n
    private String departmentName;

    //手机号
    @SalaryTableColumn(text = "手机号", width = "10%", column = "mobile")
    @TableTitle(title = "手机号", dataIndex = "mobile", key = "mobile")
    @ExcelProperty(index = 3)
    private String mobile;

    //工号
    @SalaryTableColumn(text = "工号", width = "10%", column = "jobNum")
    @TableTitle(title = "工号", dataIndex = "jobNum", key = "jobNum")
    @ExcelProperty(index = 4)
    private String jobNum;

    //证件号码
    @SalaryTableColumn(text = "证件号码", width = "10%", column = "idNo")
    @TableTitle(title = "证件号码", dataIndex = "idNo", key = "idNo")
    @ExcelProperty(index = 5)
    private String idNo;

    //入职日期
    @SalaryTableColumn(text = "入职日期", width = "10%", column = "hiredate")
    @TableTitle(title = "入职日期", dataIndex = "hiredate", key = "hiredate")
    @ExcelProperty(index = 6)
    private String hiredate;

    //累计收入额
    @SalaryTableColumn(text = "累计收入额", width = "10%", column = "addUpIncome")
    @TableTitle(title = "累计收入额", dataIndex = "addUpIncome", key = "addUpIncome")
    @ExcelProperty(index = 7)
    @Encrypt
    private String addUpIncome;

    //累计减除费用
    @SalaryTableColumn(text = "累计减除费用", width = "10%", column = "addUpSubtraction")
    @TableTitle(title = "累计减除费用", dataIndex = "addUpSubtraction", key = "addUpSubtraction")
    @ExcelProperty(index = 8)
    @Encrypt
    private String addUpSubtraction;

    //累计社保个人合计
    @SalaryTableColumn(text = "累计社保个人合计", width = "10%", column = "addUpSocialSecurityTotal")
    @TableTitle(title = "累计社保个人合计", dataIndex = "addUpSocialSecurityTotal", key = "addUpSocialSecurityTotal")
    @ExcelProperty(index = 9)
    @Encrypt
    private String addUpSocialSecurityTotal;

    //累计公积金个人合计
    @SalaryTableColumn(text = "累计公积金个人合计", width = "10%", column = "addUpAccumulationFundTotal")
    @TableTitle(title = "累计公积金个人合计", dataIndex = "addUpAccumulationFundTotal", key = "addUpAccumulationFundTotal")
    @ExcelProperty(index = 10)
    @Encrypt
    private String addUpAccumulationFundTotal;

    //累计子女教育
    @SalaryTableColumn(text = "累计子女教育", width = "10%", column = "addUpChildEducation")
    @TableTitle(title = "累计子女教育", dataIndex = "addUpChildEducation", key = "addUpChildEducation")
    @ExcelProperty(index = 11)
    @Encrypt
    private String addUpChildEducation;

    //累计继续教育
    @SalaryTableColumn(text = "累计继续教育", width = "10%", column = "addUpContinuingEducation")
    @TableTitle(title = "累计继续教育", dataIndex = "addUpContinuingEducation", key = "addUpContinuingEducation")
    @ExcelProperty(index = 12)
    @Encrypt
    private String addUpContinuingEducation;

    //累计住房贷款利息
    @SalaryTableColumn(text = "累计住房贷款利息", width = "10%", column = "addUpHousingLoanInterest")
    @TableTitle(title = "累计住房贷款利息", dataIndex = "addUpHousingLoanInterest", key = "addUpHousingLoanInterest")
    @ExcelProperty(index = 13)
    @Encrypt
    private String addUpHousingLoanInterest;

    //累计住房租金
    @SalaryTableColumn(text = "累计住房租金", width = "10%", column = "addUpHousingRent")
    @TableTitle(title = "累计住房租金", dataIndex = "addUpHousingRent", key = "addUpHousingRent")
    @ExcelProperty(index = 14)
    @Encrypt
    private String addUpHousingRent;

    //累计赡养老人
    @SalaryTableColumn(text = "累计赡养老人", width = "10%", column = "addUpSupportElderly")
    @TableTitle(title = "累计赡养老人", dataIndex = "addUpSupportElderly", key = "addUpSupportElderly")
    @ExcelProperty(index = 15)
    @Encrypt
    private String addUpSupportElderly;

    //累计大病医疗
    @SalaryTableColumn(text = "累计大病医疗", width = "10%", column = "addUpIllnessMedical")
    @TableTitle(title = "累计大病医疗", dataIndex = "addUpIllnessMedical", key = "addUpIllnessMedical")
    @ExcelProperty(index = 16)
    @Encrypt
    private String addUpIllnessMedical;

    //累计企业（职业）年金及其他福利
    @SalaryTableColumn(text = "累计企业（职业）年金及其他福利", width = "10%", column = "addUpEnterpriseAndOther")
    @TableTitle(title = "累计企业（职业）年金及其他福利", dataIndex = "addUpEnterpriseAndOther", key = "addUpEnterpriseAndOther")
    @ExcelProperty(index = 17)
    @Encrypt
    private String addUpEnterpriseAndOther;

    //累计其他扣除
    @SalaryTableColumn(text = "累计其他扣除", width = "10%", column = "addUpOtherDeduction")
    @TableTitle(title = "累计其他扣除", dataIndex = "addUpOtherDeduction", key = "addUpOtherDeduction")
    @ExcelProperty(index = 18)
    @Encrypt
    private String addUpOtherDeduction;

    //累计免税收入
    @SalaryTableColumn(text = "累计免税收入", width = "10%", column = "addUpTaxExemptIncome")
    @TableTitle(title = "累计免税收入", dataIndex = "addUpTaxExemptIncome", key = "addUpTaxExemptIncome")
    @ExcelProperty(index = 19)
    @Encrypt
    private String addUpTaxExemptIncome;

    //累计准予扣除的捐赠额
    @SalaryTableColumn(text = "累计准予扣除的捐赠额", width = "10%", column = "addUpAllowedDonation")
    @TableTitle(title = "累计准予扣除的捐赠额", dataIndex = "addUpAllowedDonation", key = "addUpAllowedDonation")
    @ExcelProperty(index = 20)
    @Encrypt
    private String addUpAllowedDonation;

    //累计减免税额
    @SalaryTableColumn(text = "累计减免税额", width = "10%", column = "addUpTaxSavings")
    @TableTitle(title = "累计减免税额", dataIndex = "addUpTaxSavings", key = "addUpTaxSavings")
    @ExcelProperty(index = 21)
    @Encrypt
    private String addUpTaxSavings;

    //累计已预扣预缴税额
    @SalaryTableColumn(text = "累计已预扣预缴税额", width = "10%", column = "addUpAdvanceTax")
    @TableTitle(title = "累计已预扣预缴税额", dataIndex = "addUpAdvanceTax", key = "addUpAdvanceTax")
    @ExcelProperty(index = 22)
    @Encrypt
    private String addUpAdvanceTax;

    //累计婴幼儿照护
    @ExcelProperty(index = 23)
    @SalaryTableColumn(text = "累计婴幼儿照护", width = "10%", column = "addUpInfantCare")
    @TableTitle(title = "累计婴幼儿照护", dataIndex = "addUpInfantCare", key = "addUpInfantCare")
    @Encrypt
    private String addUpInfantCare;

    //累计个人养老金
    @ExcelProperty(index = 24)
    @SalaryTableColumn(text = "累计个人养老金", width = "10%", column = "addUpPrivatePension")
    @TableTitle(title = "累计个人养老金", dataIndex = "addUpPrivatePension", key = "addUpPrivatePension")
    @Encrypt
    private String addUpPrivatePension;

    @SalaryTableColumn(text = "操作", width = "20%", column = "operate")
    @TableTitle(title = "操作", dataIndex = "operate", key = "operate")
    private Set<String> opts;
}